import { initState } from "./state.js"
import { compileToFunction } from './compiler/index.js'
export function initMixin(Vue){
    Vue.prototype._init = function (options){
        const vm = this
        vm.$options =options 
        // 初始化状态
        initState(vm)

        // 如果用户传入了el属性，需要将页面渲染出来
        // 如果用户传入了el,就要实现挂载流程
        if(vm.$options.el){
            vm.$mount(vm.$options.el)
        }
    }

    Vue.prototype.$mount = function(el){
        const vm = this;
        let options = vm.$ff
        el = document.querySelector(el)

        // 默认会先查找有没有render方法，没有render会采用template，template也没有就用el里面的内容
        if(!options.render){
            let template = options.template
            if(!template && el){
                template = el.outerHTML
            }
            const render = compileToFunction(template)
            options.render = render
        }
    }
}